Taken from Google's Visualizing a Decision Tree - Machine Learning Recipes #2
In [2]:
import tensorflow.contrib.learn as skflow
from sklearn.datasets import load_iris
from sklearn import metrics
In [58]:
iris = load_iris()
In [59]:
iris.keys()
Out[59]:
In [60]:
iris.feature_names
Out[60]:
In [61]:
iris.target_names
Out[61]:
In [62]:
# Withhold 3 for testing
test_idx = [0, 50, 100]
train_data = np.delete(iris.data, test_idx, axis=0)
train_target = np.delete(iris.target, test_idx)
In [63]:
test_target = iris.target[test_idx] # array([0, 1, 2])
In [64]:
test_data = iris.data[test_idx] # array([[ 5.1, 3.5, 1.4, 0.2], [ 7. , 3.2, 4.7, 1.4], ...])
Examples from http://terrytangyuan.github.io/2016/03/14/scikit-flow-intro/
In [19]:
classifier = skflow.TensorFlowDNNClassifier(hidden_units=[10, 20, 10], n_classes=3)
classifier.fit(iris.data, iris.target)
Out[19]:
In [20]:
metrics.accuracy_score(iris.target, classifier.predict(iris.data))
Out[20]:
In [29]:
def my_model(X, y):
"""This is DNN with 10, 20, 10 hidden layers, and dropout of 0.5 probability."""
layers = skflow.ops.dnn(X, [10, 20, 10]) # keep_prob=0.5 causes error
return skflow.models.logistic_regression(layers, y)
In [30]:
classifier = skflow.TensorFlowEstimator(model_fn=my_model, n_classes=3)
classifier.fit(iris.data, iris.target)
Out[30]:
In [32]:
metrics.accuracy_score(iris.target, classifier.predict(iris.data))
Out[32]:
See http://terrytangyuan.github.io/2016/03/14/scikit-flow-intro/#recurrent-neural-network.
In [49]:
classifier = skflow.TensorFlowRNNClassifier(rnn_size=2, n_classes=15)
In [50]:
classifier.fit(iris.data, iris.target)
In [56]:
import numpy as np
from tensorflow.contrib.learn.python import learn
import tensorflow as tf
np.random.seed(42)
data = np.array(
list([[2, 1, 2, 2, 3], [2, 2, 3, 4, 5], [3, 3, 1, 2, 1], [2, 4, 5, 4, 1]
]),
dtype=np.float32)
# labels for classification
labels = np.array(list([1, 0, 1, 0]), dtype=np.float32)
# targets for regression
targets = np.array(list([10, 16, 10, 16]), dtype=np.float32)
test_data = np.array(list([[1, 3, 3, 2, 1], [2, 3, 4, 5, 6]]))
def input_fn(X):
return tf.split(1, 5, X)
# Classification
classifier = learn.TensorFlowRNNClassifier(rnn_size=2,
cell_type="lstm",
n_classes=2,
input_op_fn=input_fn)
classifier.fit(data, labels)
classifier.weights_
classifier.bias_
predictions = classifier.predict(test_data)
#assertAllClose(predictions, np.array([1, 0]))
classifier = learn.TensorFlowRNNClassifier(rnn_size=2,
cell_type="rnn",
n_classes=2,
input_op_fn=input_fn,
num_layers=2)
classifier.fit(data, labels)
Out[56]:
In [66]:
classifier.predict(iris.data)
In [ ]: